接續昨天的外鍵限制探討.
昨天用CASCADE把初音的資料都刪除了.
泰大就用初音的逆襲.
今天改用另一種.
修改Billings
ALTER TABLE Billings
  DROP PRIMARY KEY
     ,
  DROP FOREIGN KEY Billings_ibfk_2;
ALTER TABLE Billings
  ADD COLUMN billid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
ALTER TABLE Billings
MODIFY galid INT UNSIGNED;
ALTER TABLE Billings
  ADD CONSTRAINT FOREIGN KEY (galid) REFERENCES Girls (galid)
   ON UPDATE SET NULL
   ON DELETE SET NULL;
修改Worklog
ALTER TABLE Worklog
 DROP PRIMARY KEY
    ,
 DROP FOREIGN KEY Worklog_ibfk_2;
ALTER TABLE Worklog
  ADD COLUMN workid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST
    ,
MODIFY galid INT UNSIGNED;
ALTER TABLE Worklog
  ADD CONSTRAINT FOREIGN KEY (galid) REFERENCES Girls (galid)
   ON UPDATE SET NULL
   ON DELETE SET NULL;
將 希崎ジェシカ 的資料在 Girls 裡面刪除.
DELETE 
  FROM Girls
 WHERE name = '希崎ジェシカ';
查看 Billings 與 Worklog 裡的資料.
SELECT *
  FROM Billings;
+--------+-------+------------+-----------+
| billid | galid | bill_date  | bill_rate |
+--------+-------+------------+-----------+
|      1 |     2 | 2013-01-01 |        26 |
|      2 |     2 | 2013-07-01 |        32 |
|      3 |  NULL | 2013-01-01 |        24 |
|      4 |     4 | 2013-01-01 |        27 |
|      5 |     4 | 2013-08-01 |        35 |
+--------+-------+------------+-----------+
SELECT *
  FROM Worklog;
+--------+-------+------------+-----------+
| workid | galid | work_date  | work_hour |
+--------+-------+------------+-----------+
|      1 |     2 | 2013-02-02 |         4 |
|      2 |     2 | 2013-08-02 |         6 |
|      3 |  NULL | 2013-03-01 |         6 |
|      4 |  NULL | 2013-08-03 |         8 |
|      5 |     4 | 2013-06-01 |         3 |
|      6 |     4 | 2013-09-01 |         5 |
+--------+-------+------------+-----------+
都變成NULL了.
外鍵限制在資料庫系統中是很重要的,我們在使用資料庫
時對外鍵限制的行為有深入的了解,對開發系統能收事半
功倍之效.
這三天的例子,將MySQL外鍵限制裡的RESTRICT, CASCADE
與 SET NULL 均做了一番推演.
應用上還可以將 ON DELETE 與 ON UPDATE 分別設定,
可以視業務需要,自行搭配.
30天的鐵人賽,終於到第30篇了.
原本今年不打算參加的,後來在好友的鼓勵與建議下,
還是繼續去年的MySQL主題,繼續發表了30篇.
去年的主題搭配了Python與一些Linux效能方面的整合
監控,繪製了一些RRDTool的圖形,並未完全聚焦在MySQL上.
今年以MySQL的一些設定與應用為主,以及索引的探討,
Profing等等,包含許多不同的面向,希望對大家在使用
MySQL的時候,能夠提供一些參考.
恭喜小雨大完賽...
![]()
![]()
![]()
![]()
![]()
![]()
![]()
來一位古典美女吧.


怎麼把girls都刪掉了....![]()
沒有都刪啦....